/*
 * Created by SharpDevelop.
 * User: EcLiB
 * Date: 17/12/2006
 * Time: 15:55
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.Collections;
using System.Collections.Generic;
using MySql.Data.MySqlClient;

namespace GAH
{
	/// <summary>
	/// Description of cProfesores.
	/// </summary>
	public class cProfesores
	{
		private string sProyecto                       = "";
		private SortedList<string,string[]> Contenedor = new SortedList<string,string[]>();
		private SortedList<int,string> Posiciones      = new SortedList<int,string>();
		private SortedList<string,Queue> Horarios      = new SortedList<string,Queue>();
		
		public cProfesores()
		{
		}
		
		public void inicializa(string sProy)
		{
           this.sProyecto = sProy;
           Carga();
		}
	
		private void Carga()
		{
			Rutinas rut    = new Rutinas();
			negocio neg    = new negocio();
			MySqlDataReader reader  = neg.select("SELECT * FROM Profesor where Proyecto='"+this.sProyecto+"'");
			while(reader.Read())
			{
				negocio neg2            = new negocio();
				MySqlDataReader reader2 = neg.select("SELECT * FROM HorariosProfesor where Proyecto='"+this.sProyecto+"' and Profesor='"+reader["Profesor"].ToString()+"'");
				Queue libres            = new Queue();
				while(reader2.Read())
				{
					int pos = (Int16.Parse(reader2["Dia"].ToString())*Int16.Parse(reader2["Modulo"].ToString()));
					libres.Enqueue(pos);
				}
				neg2.cerrar();
				this.Contenedor.Add(reader["Profesor"].ToString(),(new string[]{reader["Ramo1"].ToString(),reader["Ramo2"].ToString(),reader["Ramo3"].ToString()}));
				this.Posiciones.Add(this.Posiciones.Count,reader["Profesor"].ToString());
				this.Horarios.Add(reader["Profesor"].ToString(), libres);
			}
			neg.cerrar();
		}
       
		public string getProf(int pos)
       {
           return(this.Posiciones[pos].ToString());
       }
       
		public Queue getRam(string Prof)
		{
           return((Queue)(this.Horarios[Prof]));
		}
       
		public int Count()
       {
           return(this.Contenedor.Count);
       }
       
		public string querymodulo (int gen, int pos_profesor)
		{
			return this.Contenedor[getProf(pos_profesor)][gen];
		}
		
		public void modificar_modulo (int gen, int pos_profesor)
		{
			if (this.Contenedor[getProf(pos_profesor)][gen] =="L")
				this.Contenedor[getProf(pos_profesor)][gen]="O";
			else
				this.Contenedor[getProf(pos_profesor)][gen]="L";
		}
	}
}
